#ifndef _CINDICATORMANAGER_H
#define _CINDICATORMANAGER_H
namespace GSTrader
{
	namespace Indicator
	{
		class INDICATOR_API CIndicatorManager
		{
		public:
			CIndicatorManager(CFrameworkBase* pFramework);
			virtual ~CIndicatorManager();

			void Init();
			bool AddNewIndicator(string strIndicatorName, CIndicator* pIndicator);

			CIndicator* CreateIndicatorInstance(string strIndicatorName);
			bool RemoveIndicatorInstance(CIndicator* pIndicator);

		private:
			CIndicator* GetIndicator(string strIndicatorName);

			CFrameworkBase* m_pFramework;
		
			unordered_map<string, CIndicator*> m_mapIndicator;
			unordered_map<string, vector<CIndicator*> > m_mapIndicatorInstance;
		};

	}
}

#endif //_CINDICATORMANAGER_H